<?php
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of service_aceptor
 *
 * @author CESAR
 */
class serviceAceptor extends serviceAceptorValidator {

private $namePlatform;
private $idPlatform   = '1';

public function __construct() {
    $this->namePlatform = 'aceptor';
    $this->idPlatform   = '1';
}


public function userAsociatePractilId($userBean,$idPractil){
          if(is_object($userBean)){
               try{
                   $userBean->setIdPractil($idPractil);
                   $userBean->save();
                   return true;
               }catch(Exception $e){
                   return false;
               }
          }else{
              return false;
          }

}

public function usersRegister($nombre,$apellido_paterno,$apellido_materno,$correo,$password){

         $criterio = new Criteria();
         $criterio->add(TbUsuarioPeer::CORREO,$correo);
         $cantidad_registros = TbUsuarioPeer::doCount($criterio);

         if($cantidad_registros==0)
         {

                try {

                      {
                        $obj_usuario = new TbUsuario();
                        $obj_usuario->setNombre($nombre);
                        $obj_usuario->setApePaterno($apellido_paterno);
                        $obj_usuario->setApeMaterno($apellido_materno);
                        $obj_usuario->setCorreo($correo);
                        $obj_usuario->setPassword($password);
                        $obj_usuario->setFechaRegistro(date('Y-m-j'));
                        $obj_usuario->setHoraRegistro(date('g:i:s'));
                        $obj_usuario->setFechaHoraRegistro(date('Y-m-d H:i:s'));
                         /*23 junio 2011
                        Se asigna el estado 1 (que todavia no se que significa)  */
                        $obj_usuario->setEstado('1');
                        $obj_usuario->save();
                        //Obtiene el Id del nuevo usuario
                        $usuario_id =  $obj_usuario->getId();
                      }


                      {   ////Registra 1 Etiqueta por default al nuevo usuario

                                $one_detalle_etiqueta_user = new TbDetalleUsuarioCategoria();
                                $one_detalle_etiqueta_user->setUsuarioId($usuario_id);
                                $one_detalle_etiqueta_user->setNombreCategoria('todos');
                                $one_detalle_etiqueta_user->save();

                      }

                      {
                         /* Asigna los acuerdos pendientes a los usuarios */
                        /*23 junio 2011
                            cuando un usuario es registrado se busca en la tabla
                               - TbDetalleAcuerdoContactoPeer
                               - TbDetalleActaContactoPeer
                            si hay algun acuerdo o algun Acta con su correo y
                            le asigno el id del usuario creado a esa tabla
                         */
                        $tiene_actas_acuerdo = 1;

                        $criteria = new Criteria();
                        $criteria->add(TbDetalleAcuerdoContactoPeer::CORREO,$correo);
                        $criteria->add(TbAcuerdoPeer::ESTADO,'1');
                        $criteria->addJoin(TbDetalleAcuerdoContactoPeer::ACUERDO_ID,  TbAcuerdoPeer::ID);
                        $lst_acuerdo_contacto = TbDetalleAcuerdoContactoPeer::doSelect($criteria);

                        foreach ($lst_acuerdo_contacto as $row){

                                $tiene_actas_acuerdo = 2;
                                $upd_detalle_acuerdo_contact = TbDetalleAcuerdoContactoPeer::retrieveByPK($row->getId());
                                $upd_detalle_acuerdo_contact->setUsuarioId($usuario_id);
                                $upd_detalle_acuerdo_contact->setNombre($nombre.' '.$apellido_paterno);
                                $upd_detalle_acuerdo_contact->save();

                                $detalle_acuerdo_etiqueta = new TbDetalleAcuerdoCategoria();
                                $detalle_acuerdo_etiqueta->setAcuerdoId($upd_detalle_acuerdo_contact->getAcuerdoId());
                                $detalle_acuerdo_etiqueta->setCategoriaId($one_detalle_etiqueta_user->getId());
                                $detalle_acuerdo_etiqueta->save();

                        }

                         /* Asigna las actas pendientes a los usuarios recien registrados  */

                        $criteria = new Criteria();
                        $criteria->add(TbDetalleActaContactoPeer::CORREO,$correo);
                        $criteria->add(TbActaPeer::ESTADO,'1');
                        $criteria->addJoin(TbDetalleActaContactoPeer::ACTA_ID,  TbActaPeer::ID);
                        $lst_acta_contacto = TbDetalleActaContactoPeer::doSelect($criteria);

                        foreach ($lst_acta_contacto as $row2) {
                                $tiene_actas_acuerdo = 2;
                                $upd_detalle_acta_contact = TbDetalleActaContactoPeer::retrieveByPK($row2->getId());
                                $upd_detalle_acta_contact->setUsuarioId($usuario_id);
                                $upd_detalle_acta_contact->save();

                                $detalle_acta_etiqueta = new TbDetalleActaEtiqueta();
                                $detalle_acta_etiqueta->setActaId($upd_detalle_acta_contact->getActaId());
                                $detalle_acta_etiqueta->setCategoriaId($one_detalle_etiqueta_user->getId());
                                $detalle_acta_etiqueta->save();

                            }
                      }

                     return array("success" => true , "object" => $obj_usuario );
                }catch(Exception $e){
                     return array("success" => false , "message" => "{usersRegister}->catch Exception" );
                }
                return array("success" => false , "message" => "ups!  algun error method lib->{usersRegister} " );



         }
         else
         {
             return array("success" => false , "message" => "ups! el correo ya se encuentra registrado " );
         }
      
        
}

public function isAsociatePlataform($userPlataformaArray){
   if($userPlataformaArray!=""){
        $lista = explode('-', $userPlataformaArray);
            for($i=0 ; $i<count($lista) ; $i++){
                    if($lista[$i]==$this->idPlatform){
                        return array("success"=>true,"message"=>"si exisite en plataforma");
                    }
            }
          return array("success"=>false,"message"=>"no exisite en plataforma");
    }else{
        return array("success"=>false,"message"=>"no exisite en plataforma");
    }
}

public function login($pk_practil,$user){

    $one_user = null;
    /* En caso los campos sean completados correctamente se verifica los accesos del usuario */

    $criteria = new Criteria();
    $criteria->add(TbUsuarioPeer::ID_PRACTIL,$pk_practil);
    $one_user = TbUsuarioPeer::doSelectOne($criteria);


    /* Verifica si el usuario existe y asi crear las sesiones y asignarle un valor
     * a la variable exito */
    if(is_object($one_user)){
        if($one_user != null){
            $user->setAttribute('ses_user_id',$one_user->getId());
            $user->setAttribute('ses_user_nombre',$one_user->getNombre());
            $user->setAttribute('ses_user_ape_pat',$one_user->getApePaterno());
            $user->setAttribute('ses_user_ape_mat',$one_user->getApeMaterno());
            $user->setAttribute('ses_user_correo',$one_user->getCorreo());
            $ses_acuerdo_id =$user->getAttribute('ses_acuerdo_id','no_id');
            $ses_acta_id    =$user->getAttribute('ses_acta_id','no_id');
            $user->setAuthenticated(true);
            return $one_user;
        }else{
            return null;
        }
    }else{
          return null;
    }
}

public function redirectUserLogin($userBean,$paquete){

   if($userBean!=null && is_object($userBean) ){
                /*aca voy a ver que tipo de usuario es */
               if($tipo_usuario!='null'){
                       $ses_tipo_user=$this->getUser()->setAttribute('ses_tipo_user',$tipo_usuario);
                        //version pagada
                       $this->redirect('@home_profesional');
                      return sfView::SUCCESS;
                }else{
                    $ses_tipo_user=$this->getUser()->setAttribute('ses_tipo_user','null');
                    return sfView::SUCCESS;
                }


    }else{
        $this->redirect('home/index');
    }

}


public function executeLogout($user){
    $user->getAttributeHolder()->remove('ses_user_id');
    $user->getAttributeHolder()->remove('ses_user_nombre');
    $user->getAttributeHolder()->remove('ses_user_ape_pat');
    $user->getAttributeHolder()->remove('ses_user_ape_mat');
    $user->getAttributeHolder()->remove('ses_user_correo');
    $user->getAttributeHolder()->remove('ses_tipo_user');
    $user->getAttributeHolder()->remove('ses_acuerdo_id');
    $user->getAttributeHolder()->remove('ses_acta_id');
    $user->getAttributeHolder()->remove('ses_categoria');
    $user->getAttributeHolder()->remove('ses_lst_documento');
    $user->setAuthenticated(false);
    $user->getAttributeHolder()->clear();
    return array ("success"=> true , "redirect" => 'home/index');
  }

 public function getTimezone($pamerametro = "peru")
 {
    if($pamerametro=="peru")
    {
        return "America/Bogota";
    }
    else
    {
        return "UTC";
    }
 }

 public function getDayTextHtml($day)
 {
  $dia = array();
  $dia[0] = "Domingo";
  $dia[1] = "Lunes";
  $dia[2] = "Martes";
  $dia[3] = "Mi&eacute;rcoles";
  $dia[4] = "Jueves";
  $dia[5] = "Viernes";
  $dia[6] = "S&aacute;bado";
  return $dia[$day];
 }



//=======================================================================================//
//================================== URL ================================================//
//=======================================================================================//


private function return_token_aplication(){
   return md5('esferadigital');
}


public function returnUrlGetUser($user_id=""){
     $querydata = http_build_query(
            array(
                'token' => $this->return_token_aplication(),
                'id' => $user_id
            )
        );
    $json_string = sfConfig::get('app_url_practil').sfConfig::get('app_module_user_json').'get_user_by_id?'.$querydata;
    return $json_string;
}

public function returnUrlPacket($userId,$plataformId){
       $querydata = http_build_query(
            array(
                'user_id' => $userId,
                'plataforma_id' => $plataformId,
                'security' => "null"
            )
        );
      $json_string=sfConfig::get('app_url_practil').sfConfig::get('app_module_user_json').'userInformationPacket?'.$querydata;
      return $json_string;
}


public function returnUrlAssociateAccount($email,$plataformId){

          $querydata = http_build_query(
            array(
                'email' => $email,
                'plataforma' => $plataformId,
                'token' => $this->return_token_aplication()
            )
        );

      $json_string    = sfConfig::get('app_url_practil').sfConfig::get('app_module_user_json').'asociar_plataforma?'.$querydata;
      return $json_string;
}

public function returnUrlRegisterPacket($plataformId,$userId,$paquete){    
      $querydata = http_build_query(
            array(
                    'token'        => $this->return_token_aplication(),
                    'plataformaId' => $plataformId,
                    'userId'       => $userId,
                    'paqueteId'    => $paquete
                 )
            );
      $json_string    = sfConfig::get('app_url_practil').sfConfig::get('app_module_user_json').'registerPackage?'.$querydata;
      return $json_string;
}


public function returnUrlRegisterUser($nombre,$apellido,$password,$email,$plataforma,$tipoRegistro){
      $querydata = http_build_query(
            array(
                    'nombre'         => $nombre,
                    'apellido'       => $apellido,
                    'password'       => $password,
                    'email'          => $email,
                    'plataforma'     => $plataforma,
                    'tipo_registro'  => $tipoRegistro,
                    'token'          => $this->return_token_aplication()
                 )
            );
      $json_string    = sfConfig::get('app_url_practil').sfConfig::get('app_module_user_json').'registrar?'.$querydata;
      return $json_string;
}

//=========================================================================================//
//=========================================================================================//
//=========================================================================================//


}
?>
